cmake_minimum_required(VERSION 2.8.3)
project(imu_calib)

find_package(catkin REQUIRED COMPONENTS
  cmake_modules
  roscpp
  sensor_msgs
  riki_msgs
)

find_package(Eigen REQUIRED)
pkg_check_modules(YAML yaml-cpp)

###################################
## catkin specific configuration ##
###################################

catkin_package(
  INCLUDE_DIRS include
  LIBRARIES accel_calib
  CATKIN_DEPENDS cmake_modules roscpp sensor_msgs riki_msgs
  DEPENDS Eigen yaml-cpp
)

###########
## Build ##
###########

include_directories(include)
include_directories(
  ${catkin_INCLUDE_DIRS}
  ${Eigen_INCLUDE_DIRS}
  ${YAML_INCLUDEDIR}
)

# accel_calib library
add_library(accel_calib
  src/accel_calib/accel_calib.cpp
)
target_link_libraries(accel_calib
  ${YAML_LIBRARIES}
)

# do_calib node
add_executable(do_calib src/do_calib_node.cpp src/do_calib.cpp)
add_dependencies(do_calib ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(do_calib
  accel_calib
  ${catkin_LIBRARIES}
)

# apply_calib node
add_executable(apply_calib src/apply_calib_node.cpp src/apply_calib.cpp)
add_dependencies(apply_calib ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(apply_calib
  accel_calib
  ${catkin_LIBRARIES}
)

#############
## Install ##
#############

# executables and libraries
install(TARGETS accel_calib do_calib apply_calib
  ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

# header files
install(DIRECTORY include/${PROJECT_NAME}/
  DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
  FILES_MATCHING PATTERN "*.h"
  PATTERN ".svn" EXCLUDE
)
